[INFO] cloning repository https://github.com/rhoopr/bambutop
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/rhoopr/bambutop" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frhoopr%2Fbambutop", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frhoopr%2Fbambutop'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] a3629e17c909a64f13a01ad7be3939f4c7fb9a09
[INFO] testing rhoopr/bambutop against try#0abe69e6c16114311cc2700e972492e64d69c28f for pr-154065-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Frhoopr%2Fbambutop" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/rhoopr/bambutop
[INFO] finished tweaking git repo https://github.com/rhoopr/bambutop
[INFO] tweaked toml for git repo https://github.com/rhoopr/bambutop written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/rhoopr/bambutop on toolchain 0abe69e6c16114311cc2700e972492e64d69c28f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/rhoopr/bambutop already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] dac91de44b67160b51bac4b32454795c6320862116411faa6f1f1cde5139297b
[INFO] running `Command { std: "docker" "start" "-a" "dac91de44b67160b51bac4b32454795c6320862116411faa6f1f1cde5139297b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "dac91de44b67160b51bac4b32454795c6320862116411faa6f1f1cde5139297b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dac91de44b67160b51bac4b32454795c6320862116411faa6f1f1cde5139297b", kill_on_drop: false }`
[INFO] [stdout] dac91de44b67160b51bac4b32454795c6320862116411faa6f1f1cde5139297b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d82eb2deffac5d742c5217c3dc45829f59c960b241e8bbff4ea797af65f25ebd
[INFO] running `Command { std: "docker" "start" "-a" "d82eb2deffac5d742c5217c3dc45829f59c960b241e8bbff4ea797af65f25ebd", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.105
[INFO] [stderr]    Compiling unicode-ident v1.0.22
[INFO] [stderr]    Compiling quote v1.0.43
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling parking v2.2.1
[INFO] [stderr]    Compiling indexmap v2.13.0
[INFO] [stderr]    Compiling winnow v0.7.14
[INFO] [stderr]    Compiling winnow v1.0.0
[INFO] [stderr]    Compiling bitflags v2.10.0
[INFO] [stderr]    Compiling toml_datetime v1.1.0+spec-1.1.0
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling find-msvc-tools v0.1.7
[INFO] [stderr]    Compiling slab v0.4.11
[INFO] [stderr]    Compiling concurrent-queue v2.5.0
[INFO] [stderr]    Compiling cc v1.2.52
[INFO] [stderr]    Compiling rustix v1.1.3
[INFO] [stderr]    Compiling event-listener v5.4.1
[INFO] [stderr]    Compiling syn v2.0.114
[INFO] [stderr]    Compiling futures-lite v2.6.1
[INFO] [stderr]    Compiling event-listener-strategy v0.5.4
[INFO] [stderr]    Compiling linux-raw-sys v0.11.0
[INFO] [stderr]    Compiling endi v1.1.1
[INFO] [stderr]    Compiling rustls-pki-types v1.13.2
[INFO] [stderr]    Compiling toml_parser v1.1.0+spec-1.1.0
[INFO] [stderr]    Compiling toml_edit v0.25.8+spec-1.1.0
[INFO] [stderr]    Compiling async-io v2.6.0
[INFO] [stderr]    Compiling mio v1.1.1
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling futures-sink v0.3.31
[INFO] [stderr]    Compiling async-task v4.7.1
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling proc-macro-crate v3.5.0
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling async-channel v2.5.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling rustls v0.22.4
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling piper v0.2.5
[INFO] [stderr]    Compiling async-lock v3.4.2
[INFO] [stderr]    Compiling socket2 v0.6.1
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling zmij v1.0.14
[INFO] [stderr]    Compiling instability v0.3.11
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling blocking v1.6.2
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling uuid v1.23.0
[INFO] [stderr]    Compiling async-executor v1.14.0
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling rustls-pemfile v2.2.0
[INFO] [stderr]    Compiling spin v0.9.8
[INFO] [stderr]    Compiling rustls-webpki v0.102.8
[INFO] [stderr]    Compiling async-broadcast v0.7.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling enumflags2_derive v0.7.12
[INFO] [stderr]    Compiling tracing-attributes v0.1.31
[INFO] [stderr]    Compiling polling v3.11.0
[INFO] [stderr]    Compiling tokio-macros v2.6.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling async-signal v0.2.13
[INFO] [stderr]    Compiling async-process v2.5.0
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling tokio v1.49.0
[INFO] [stderr]    Compiling serde_repr v0.1.20
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling async-recursion v1.1.1
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling ordered-stream v0.2.0
[INFO] [stderr]    Compiling anyhow v1.0.100
[INFO] [stderr]    Compiling anstyle v1.0.13
[INFO] [stderr]    Compiling clap_lex v0.7.7
[INFO] [stderr]    Compiling hex v0.4.3
[INFO] [stderr]    Compiling option-ext v0.2.0
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling rustls-native-certs v0.7.3
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling clap_builder v4.5.54
[INFO] [stderr]    Compiling clap_derive v4.5.49
[INFO] [stderr]    Compiling flume v0.11.1
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling zvariant_utils v3.3.0
[INFO] [stderr]    Compiling enumflags2 v0.7.12
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling zvariant_derive v5.10.0
[INFO] [stderr]    Compiling futures-channel v0.3.31
[INFO] [stderr]    Compiling unicode-width v0.2.0
[INFO] [stderr]    Compiling memchr v2.7.6
[INFO] [stderr]    Compiling zvariant v5.10.0
[INFO] [stderr]    Compiling cassowary v0.3.0
[INFO] [stderr]    Compiling tokio-rustls v0.25.0
[INFO] [stderr]    Compiling clap v4.5.54
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling rumqttc v0.24.0
[INFO] [stderr]    Compiling toml v0.8.23
[INFO] [stderr]    Compiling ratatui v0.29.0
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling zbus_names v4.3.1
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling zbus_macros v5.14.0
[INFO] [stderr]    Compiling zbus v5.14.0
[INFO] [stderr]    Compiling notify-rust v4.12.0
[INFO] [stderr]    Compiling bambutop v1.0.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 34s
[INFO] running `Command { std: "docker" "inspect" "d82eb2deffac5d742c5217c3dc45829f59c960b241e8bbff4ea797af65f25ebd", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d82eb2deffac5d742c5217c3dc45829f59c960b241e8bbff4ea797af65f25ebd", kill_on_drop: false }`
[INFO] [stdout] d82eb2deffac5d742c5217c3dc45829f59c960b241e8bbff4ea797af65f25ebd
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 4660df694b1808c6195e751afcac1336a508f50f96d0f41ce2e0f2a7b0be0f85
[INFO] running `Command { std: "docker" "start" "-a" "4660df694b1808c6195e751afcac1336a508f50f96d0f41ce2e0f2a7b0be0f85", kill_on_drop: false }`
[INFO] [stderr]    Compiling bambutop v1.0.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 6.11s
[INFO] running `Command { std: "docker" "inspect" "4660df694b1808c6195e751afcac1336a508f50f96d0f41ce2e0f2a7b0be0f85", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4660df694b1808c6195e751afcac1336a508f50f96d0f41ce2e0f2a7b0be0f85", kill_on_drop: false }`
[INFO] [stdout] 4660df694b1808c6195e751afcac1336a508f50f96d0f41ce2e0f2a7b0be0f85
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] dde61f432e203ad4373b1fc68efbd8fd635982a37e9eed682e1d810f1f879ed4
[INFO] running `Command { std: "docker" "start" "-a" "dde61f432e203ad4373b1fc68efbd8fd635982a37e9eed682e1d810f1f879ed4", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.33s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/bambutop-5e00aed14ed71af1)
[INFO] [stdout] 
[INFO] [stdout] running 372 tests
[INFO] [stdout] test app::tests::connected_count_tests::connect_increments_count ... ok
[INFO] [stdout] test app::tests::connected_count_tests::disconnect_decrements_count ... ok
[INFO] [stdout] test app::tests::connected_count_tests::double_disconnect_does_not_underflow ... ok
[INFO] [stdout] test app::tests::connected_count_tests::initial_connected_count_is_zero ... ok
[INFO] [stdout] test app::tests::connected_count_tests::multi_printer_connected_count ... ok
[INFO] [stdout] test app::tests::connected_count_tests::out_of_bounds_index_is_ignored ... ok
[INFO] [stdout] test app::tests::handle_mqtt_event_tests::connected_then_error_then_connected_clears_error ... ok
[INFO] [stdout] test app::tests::is_connection_stale_tests::returns_false_when_connected_with_recent_update ... ok
[INFO] [stdout] test app::tests::handle_mqtt_event_tests::state_updated_event_records_time_and_marks_connected ... ok
[INFO] [stdout] test app::tests::handle_mqtt_event_tests::error_event_stores_message ... ok
[INFO] [stdout] test app::tests::handle_mqtt_event_tests::connected_event_sets_connected_and_clears_error ... ok
[INFO] [stdout] test app::tests::handle_mqtt_event_tests::disconnected_event_clears_connected ... ok
[INFO] [stdout] test app::tests::is_connection_stale_tests::returns_true_when_connected_but_never_received_data ... ok
[INFO] [stdout] test app::tests::connected_count_tests::double_connect_does_not_double_count ... ok
[INFO] [stdout] test app::tests::is_connection_stale_tests::returns_true_when_connected_with_old_update ... ok
[INFO] [stdout] test app::tests::multi_printer_tests::new_multi_requires_at_least_one_printer ... ok
[INFO] [stdout] test app::tests::multi_printer_tests::new_multi_multiple_printers_uses_aggregate_view ... ok
[INFO] [stdout] test app::tests::multi_printer_tests::new_multi_single_printer_uses_single_view ... ok
[INFO] [stdout] test app::tests::multi_printer_tests::set_active_printer_out_of_bounds_returns_false ... ok
[INFO] [stdout] test app::tests::multi_printer_tests::set_active_printer_within_bounds ... ok
[INFO] [stdout] test app::tests::is_connection_stale_tests::returns_false_when_update_near_threshold ... ok
[INFO] [stdout] test app::tests::notification_tests::new_hms_error_generates_warning_toast ... ok
[INFO] [stdout] test app::tests::notification_tests::no_hms_toast_before_first_hms_report ... ok
[INFO] [stdout] test app::tests::notification_tests::print_completion_generates_success_toast ... ok
[INFO] [stdout] test app::tests::notification_tests::no_toast_on_initial_connection ... ok
[INFO] [stdout] test app::tests::notification_tests::print_failure_generates_error_toast ... ok
[INFO] [stdout] test app::tests::timezone_offset_tests::timezone_offset_is_within_valid_range ... ok
[INFO] [stdout] test app::tests::toast_expiration_tests::fresh_toasts_are_not_expired ... ok
[INFO] [stdout] test app::tests::timezone_offset_tests::timezone_offset_is_consistent ... ok
[INFO] [stdout] test app::tests::toast_expiration_tests::expire_all_when_all_old ... ok
[INFO] [stdout] test app::tests::notification_tests::existing_hms_error_does_not_re_notify ... ok
[INFO] [stdout] test app::tests::toast_expiration_tests::mixed_age_toasts_partial_expiry ... ok
[INFO] [stdout] test app::tests::toast_expiration_tests::old_toasts_are_expired ... ok
[INFO] [stdout] test app::tests::toast_queue_tests::convenience_methods_set_correct_severity ... ok
[INFO] [stdout] test app::tests::toast_queue_tests::toast_overflow_removes_oldest ... ok
[INFO] [stdout] test app::tests::toast_queue_tests::toast_overflow_preserves_severity ... ok
[INFO] [stdout] test app::tests::toast_queue_tests::toast_overflow_with_many_additions ... ok
[INFO] [stdout] test config::tests::test_backwards_compatible_construction ... ok
[INFO] [stdout] test config::tests::test_default_port_applied ... ok
[INFO] [stdout] test app::tests::multi_printer_tests::printer_count_returns_correct_value ... ok
[INFO] [stdout] test config::tests::test_custom_port_preserved ... ok
[INFO] [stdout] test config::tests::test_mutable_printer_field_access ... ok
[INFO] [stdout] test config::tests::test_parse_legacy_format ... ok
[INFO] [stdout] test config::tests::test_parse_legacy_format_with_port ... ok
[INFO] [stdout] test config::tests::test_direct_printer_field_access ... ok
[INFO] [stdout] test config::tests::test_parse_new_multi_printer_format ... ok
[INFO] [stdout] test config::tests::test_serialize_to_new_format ... ok
[INFO] [stdout] test config::tests::test_parse_new_single_printer_format ... ok
[INFO] [stdout] test config::tests::test_parse_new_format_without_name ... ok
[INFO] [stdout] test config::tests::test_serialize_multiple_printers ... ok
[INFO] [stdout] test mqtt::tests::no_verifier_tests::supports_common_signature_schemes ... ok
[INFO] [stdout] test config::tests::test_serialize_without_optional_name ... ok
[INFO] [stdout] test config::tests::test_three_printers ... ok
[INFO] [stdout] test mqtt::tests::payload_tests::chamber_light_off ... ok
[INFO] [stdout] test mqtt::tests::no_verifier_tests::accepts_any_server_certificate ... ok
[INFO] [stdout] test mqtt::tests::payload_tests::pushall_has_correct_structure ... ok
[INFO] [stdout] test config::tests::test_roundtrip_legacy_to_new_format ... ok
[INFO] [stdout] test mqtt::tests::payload_tests::resume_command ... ok
[INFO] [stdout] test mqtt::tests::payload_tests::chamber_light_on ... ok
[INFO] [stdout] test config::tests::test_printer_ordering_preserved_through_roundtrip ... ok
[INFO] [stdout] test mqtt::tests::payload_tests::pause_command ... ok
[INFO] [stdout] test mqtt::tests::payload_tests::speed_level_encodes_param_as_string ... ok
[INFO] [stdout] test mqtt::tests::payload_tests::stop_command ... ok
[INFO] [stdout] test mqtt::tests::payload_tests::work_light_on ... ok
[INFO] [stdout] test mqtt::tests::sequence_id_tests::sequence_id_starts_at_one ... ok
[INFO] [stdout] test mqtt::tests::payload_tests::version_info_has_correct_structure ... ok
[INFO] [stdout] test app::tests::is_connection_stale_tests::returns_false_when_disconnected ... ok
[INFO] [stdout] test mqtt::tests::sequence_id_tests::sequence_ids_are_monotonically_increasing ... ok
[INFO] [stdout] test mqtt::tests::topic_tests::report_topic_format ... ok
[INFO] [stdout] test printer::tests::active_filament_type_tests::handles_multi_unit_selection ... ok
[INFO] [stdout] test printer::tests::active_filament_type_tests::returns_material_when_tray_selected ... ok
[INFO] [stdout] test printer::tests::active_filament_type_tests::returns_none_when_no_ams ... ok
[INFO] [stdout] test printer::tests::active_filament_type_tests::returns_none_when_no_tray_selected ... ok
[INFO] [stdout] test printer::tests::active_filament_type_tests::returns_none_when_tray_empty ... ok
[INFO] [stdout] test printer::tests::ams_parsing_tests::full_ams_is_not_lite ... ok
[INFO] [stdout] test printer::tests::ams_parsing_tests::detects_ams_lite ... ok
[INFO] [stdout] test printer::tests::ams_parsing_tests::handles_external_spool ... ok
[INFO] [stdout] test printer::tests::ams_parsing_tests::handles_no_tray_selected ... ok
[INFO] [stdout] test printer::tests::ams_parsing_tests::handles_negative_remaining ... ok
[INFO] [stdout] test printer::tests::ams_parsing_tests::parses_active_tray_correctly ... ok
[INFO] [stdout] test mqtt::tests::topic_tests::request_topic_format ... ok
[INFO] [stdout] test printer::tests::capability_detection_tests::chamber_light_does_not_set_work_light ... ok
[INFO] [stdout] test printer::tests::capability_detection_tests::capabilities_persist_across_updates ... ok
[INFO] [stdout] test printer::tests::capability_detection_tests::detects_chamber_temp_from_enclosed_model ... ok
[INFO] [stdout] test printer::tests::ams_parsing_tests::parses_first_unit_first_tray ... ok
[INFO] [stdout] test printer::tests::capability_detection_tests::detects_aux_and_chamber_fans ... ok
[INFO] [stdout] test printer::tests::capability_detection_tests::detects_xcam ... ok
[INFO] [stdout] test printer::tests::capability_detection_tests::detects_heatbreak_fan ... ok
[INFO] [stdout] test printer::tests::capability_detection_tests::detects_ipcam ... ok
[INFO] [stdout] test printer::tests::capability_detection_tests::no_capabilities_by_default ... ok
[INFO] [stdout] test printer::tests::capability_detection_tests::no_chamber_temp_for_open_frame_model ... ok
[INFO] [stdout] test printer::tests::capability_detection_tests::detects_work_light ... ok
[INFO] [stdout] test printer::tests::display_name_tests::detects_slicer_profiles_with_cloud_prefix ... ok
[INFO] [stdout] test printer::tests::display_name_tests::prefers_subtask_name_over_gcode_file ... ok
[INFO] [stdout] test printer::tests::ams_parsing_tests::parses_ams_units_and_trays ... ok
[INFO] [stdout] test printer::tests::failure_description_tests::prefers_mc_print_error_code_over_print_error ... ok
[INFO] [stdout] test printer::tests::failure_description_tests::returns_fail_reason_when_available ... ok
[INFO] [stdout] test printer::tests::display_name_tests::returns_empty_when_no_name ... ok
[INFO] [stdout] test printer::tests::display_name_tests::slicer_profile_without_cloud_shows_raw ... ok
[INFO] [stdout] test printer::tests::display_name_tests::strips_file_extensions ... ok
[INFO] [stdout] test printer::tests::failure_description_tests::falls_back_to_mc_print_error_code ... ok
[INFO] [stdout] test printer::tests::failure_description_tests::falls_back_to_print_error ... ok
[INFO] [stdout] test printer::tests::display_name_tests::falls_back_to_gcode_file ... ok
[INFO] [stdout] test printer::tests::is_active_tests::empty_state_is_not_active ... ok
[INFO] [stdout] test printer::tests::failure_description_tests::returns_none_when_failed_with_no_info ... ok
[INFO] [stdout] test printer::tests::is_active_tests::finish_state_is_not_active ... ok
[INFO] [stdout] test printer::tests::failure_description_tests::returns_none_when_not_failed ... ok
[INFO] [stdout] test printer::tests::format_hms_code_tests::maps_common_error_codes ... ok
[INFO] [stdout] test printer::tests::format_hms_code_tests::returns_borrowed_for_known_codes ... ok
[INFO] [stdout] test printer::tests::format_hms_code_tests::returns_borrowed_for_unknown_codes ... ok
[INFO] [stdout] test printer::tests::is_active_tests::idle_state_is_not_active ... ok
[INFO] [stdout] test printer::tests::is_active_tests::pause_state_is_active ... ok
[INFO] [stdout] test printer::tests::is_active_tests::running_state_is_active ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::handles_empty_print_object ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::handles_non_print_messages ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::ignores_unknown_top_level_fields ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_comprehensive_status_message ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_error_codes_as_integers ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_fail_reason_and_error_codes ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_firmware_and_hardware_version ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_gcode_start_time_as_number ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_gcode_start_time_as_string ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_heatbreak_fan_as_integer ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_ipcam_with_unknown_fields ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_heatbreak_fan_as_string ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::ignores_zero_gcode_start_time ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_hms_errors ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_ams_with_tray_temps_as_strings ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_ipcam ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_lights_report ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_minimal_status_message ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_xcam_with_integer_values ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_xcam_with_string_values ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_nozzle_diameter ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_temperatures_and_fans ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_xcam_with_bool_values ... ok
[INFO] [stdout] test printer::tests::json_deserialization_tests::parses_xcam_with_unknown_extra_fields ... ok
[INFO] [stdout] test printer::tests::looks_like_slicer_profile_tests::allows_normal_project_names ... ok
[INFO] [stdout] test printer::tests::model_from_serial_tests::identifies_a1_series ... ok
[INFO] [stdout] test printer::tests::model_from_serial_tests::identifies_p1_series ... ok
[INFO] [stdout] test printer::tests::model_from_serial_tests::returns_default_for_short_serial ... ok
[INFO] [stdout] test printer::tests::looks_like_slicer_profile_tests::detects_multiple_material_terms ... ok
[INFO] [stdout] test printer::tests::model_from_serial_tests::returns_default_for_unknown ... ok
[INFO] [stdout] test printer::tests::looks_like_slicer_profile_tests::detects_walls_pattern ... ok
[INFO] [stdout] test printer::tests::looks_like_slicer_profile_tests::single_material_term_is_not_profile ... ok
[INFO] [stdout] test printer::tests::model_from_serial_tests::identifies_x1_series ... ok
[INFO] [stdout] test printer::tests::parse_fan_speed_tests::converts_zero ... ok
[INFO] [stdout] test printer::tests::parse_fan_speed_tests::returns_none_for_invalid_input ... ok
[INFO] [stdout] test printer::tests::parse_fan_speed_tests::caps_values_above_15 ... ok
[INFO] [stdout] test printer::tests::parse_fan_speed_tests::converts_max ... ok
[INFO] [stdout] test printer::tests::parse_fan_speed_tests::converts_mid_values ... ok
[INFO] [stdout] test printer::tests::parse_fan_speed_tests::returns_none_for_whitespace ... ok
[INFO] [stdout] test printer::tests::parse_hex_color_tests::ignores_alpha_channel ... ok
[INFO] [stdout] test printer::tests::parse_hex_color_tests::parses_without_hash_prefix ... ok
[INFO] [stdout] test printer::tests::parse_hex_color_tests::returns_none_for_invalid_hex ... ok
[INFO] [stdout] test printer::tests::prepare_percent_tests::cleared_on_state_transition_from_prepare ... ok
[INFO] [stdout] test printer::tests::parse_hex_color_tests::parses_lowercase ... ok
[INFO] [stdout] test printer::tests::parse_hex_color_tests::parses_with_hash_prefix ... ok
[INFO] [stdout] test printer::tests::parse_hex_color_tests::returns_none_for_short_strings ... ok
[INFO] [stdout] test printer::tests::prepare_percent_tests::defaults_to_none ... ok
[INFO] [stdout] test printer::tests::print_phase_tests::detects_cleaning_nozzle_from_stage ... ok
[INFO] [stdout] test printer::tests::prepare_percent_tests::not_cleared_when_state_stays_prepare ... ok
[INFO] [stdout] test printer::tests::print_phase_tests::detects_homing_from_stage ... ok
[INFO] [stdout] test printer::tests::looks_like_slicer_profile_tests::detects_infill_pattern ... ok
[INFO] [stdout] test printer::tests::looks_like_slicer_profile_tests::detects_layer_pattern ... ok
[INFO] [stdout] test printer::tests::prepare_percent_tests::parses_from_mqtt_json ... ok
[INFO] [stdout] test printer::tests::prepare_percent_tests::stored_in_print_status ... ok
[INFO] [stdout] test printer::tests::print_phase_tests::detects_auto_leveling_from_stage ... ok
[INFO] [stdout] test printer::tests::print_phase_tests::detects_bed_heating_from_stage ... ok
[INFO] [stdout] test printer::tests::print_phase_tests::infers_bed_heating_from_temperature ... ok
[INFO] [stdout] test printer::tests::print_phase_tests::infers_nozzle_heating_from_temperature ... ok
[INFO] [stdout] test printer::tests::print_phase_tests::returns_none_when_not_active ... ok
[INFO] [stdout] test printer::tests::print_phase_tests::detects_printing_with_layers ... ok
[INFO] [stdout] test printer::tests::print_phase_tests::detects_printing_with_progress ... ok
[INFO] [stdout] test printer::tests::print_phase_tests::handles_pause_state ... ok
[INFO] [stdout] test printer::tests::speed_level_to_name_tests::converts_known_speed_levels ... ok
[INFO] [stdout] test printer::tests::print_phase_tests::detects_nozzle_heating_from_stage ... ok
[INFO] [stdout] test printer::tests::print_phase_tests::returns_preparing_as_fallback ... ok
[INFO] [stdout] test printer::tests::tray_pre_tar_tests::filament_change_description_both_set ... ok
[INFO] [stdout] test printer::tests::tray_pre_tar_tests::filament_change_description_none_when_missing ... ok
[INFO] [stdout] test printer::tests::speed_level_to_name_tests::defaults_unknown_levels_to_standard ... ok
[INFO] [stdout] test printer::tests::speed_level_to_percent_tests::converts_known_speed_levels ... ok
[INFO] [stdout] test printer::tests::speed_level_to_percent_tests::defaults_unknown_levels_to_standard ... ok
[INFO] [stdout] test printer::tests::tray_pre_tar_tests::filters_external_spool_values ... ok
[INFO] [stdout] test printer::tests::tray_pre_tar_tests::parses_from_ams_report ... ok
[INFO] [stdout] test printer::tests::tray_pre_tar_tests::stored_in_ams_state ... ok
[INFO] [stdout] test printer::tests::update_from_message_tests::updates_lights ... ok
[INFO] [stdout] test printer::tests::update_from_message_tests::updates_print_status_fields ... ok
[INFO] [stdout] test printer::tests::update_from_message_tests::handles_empty_message ... ok
[INFO] [stdout] test printer::tests::upgrade_state_tests::handles_numeric_progress ... ok
[INFO] [stdout] test printer::tests::update_from_message_tests::parses_hms_errors ... ok
[INFO] [stdout] test printer::tests::update_from_message_tests::preserves_unmentioned_fields ... ok
[INFO] [stdout] test printer::tests::update_from_message_tests::updates_fan_speeds ... ok
[INFO] [stdout] test printer::tests::update_from_message_tests::updates_speed_magnitude ... ok
[INFO] [stdout] test printer::tests::update_from_message_tests::updates_temperatures ... ok
[INFO] [stdout] test printer::tests::upgrade_state_tests::handles_missing_fields ... ok
[INFO] [stdout] test ui::aggregate::tests::calculate_cards_per_row_tests::clamps_to_printer_count ... ok
[INFO] [stdout] test ui::aggregate::tests::calculate_cards_per_row_tests::narrow_terminal_forces_single_column ... ok
[INFO] [stdout] test ui::aggregate::tests::calculate_cards_per_row_tests::wide_terminal_uses_multiple_columns ... ok
[INFO] [stdout] test ui::aggregate::tests::get_status_text_tests::connected_failed ... ok
[INFO] [stdout] test printer::tests::upgrade_state_tests::is_active_false_for_empty_status ... ok
[INFO] [stdout] test printer::tests::upgrade_state_tests::idle_upgrade_clears_state ... ok
[INFO] [stdout] test ui::aggregate::tests::calculate_cards_per_row_tests::zero_width_returns_one ... ok
[INFO] [stdout] test ui::aggregate::tests::calculate_cards_per_row_tests::respects_max_cards_limit ... ok
[INFO] [stdout] test printer::tests::upgrade_state_tests::parses_active_upgrade ... ok
[INFO] [stdout] test ui::aggregate::tests::get_status_text_tests::connected_idle ... ok
[INFO] [stdout] test ui::aggregate::tests::calculate_cards_per_row_tests::single_printer_always_one_column ... ok
[INFO] [stdout] test ui::aggregate::tests::get_status_text_tests::connected_paused ... ok
[INFO] [stdout] test ui::aggregate::tests::get_status_text_tests::connected_printing ... ok
[INFO] [stdout] test ui::aggregate::tests::get_status_text_tests::disconnected ... ok
[INFO] [stdout] test ui::aggregate::tests::wifi_indicator_tests::empty_signal_returns_dashes ... ok
[INFO] [stdout] test ui::aggregate::tests::wifi_indicator_tests::medium_signal ... ok
[INFO] [stdout] test ui::aggregate::tests::wifi_indicator_tests::strong_signal ... ok
[INFO] [stdout] test ui::aggregate::tests::wifi_indicator_tests::threshold_boundary_medium ... ok
[INFO] [stdout] test ui::aggregate::tests::wifi_indicator_tests::threshold_boundary_strong ... ok
[INFO] [stdout] test ui::aggregate::tests::wifi_indicator_tests::weak_signal ... ok
[INFO] [stdout] test ui::common::tests::celsius_to_fahrenheit_tests::converts_boiling_point ... ok
[INFO] [stdout] test ui::common::tests::celsius_to_fahrenheit_tests::converts_freezing_point ... ok
[INFO] [stdout] test ui::common::tests::celsius_to_fahrenheit_tests::converts_negative_forty ... ok
[INFO] [stdout] test ui::common::tests::celsius_to_fahrenheit_tests::converts_typical_nozzle_temps ... ok
[INFO] [stdout] test ui::common::tests::extract_serial_suffix_tests::extracts_from_exact_4_char_serial ... ok
[INFO] [stdout] test ui::common::tests::extract_serial_suffix_tests::extracts_last_4_chars ... ok
[INFO] [stdout] test ui::common::tests::extract_serial_suffix_tests::handles_serial_with_letters ... ok
[INFO] [stdout] test ui::common::tests::extract_serial_suffix_tests::returns_empty_for_empty_serial ... ok
[INFO] [stdout] test ui::common::tests::format_compact_title_tests::handles_empty_model_without_serial ... ok
[INFO] [stdout] test ui::common::tests::extract_serial_suffix_tests::returns_empty_for_short_serial ... ok
[INFO] [stdout] test ui::common::tests::format_compact_title_tests::handles_unknown_model_with_serial ... ok
[INFO] [stdout] test ui::common::tests::format_compact_title_tests::formats_a1_mini_with_serial_suffix ... ok
[INFO] [stdout] test ui::common::tests::format_compact_title_tests::formats_p1s_with_serial_suffix ... ok
[INFO] [stdout] test ui::common::tests::format_compact_title_tests::formats_x1c_with_serial_suffix ... ok
[INFO] [stdout] test ui::common::tests::format_compact_title_tests::handles_empty_model_with_serial ... ok
[INFO] [stdout] test ui::common::tests::parse_dbm_tests::concatenates_all_digit_sequences ... ok
[INFO] [stdout] test ui::common::tests::parse_dbm_tests::handles_multiple_minus_signs ... ok
[INFO] [stdout] test ui::common::tests::format_compact_title_tests::handles_unknown_model_without_serial ... ok
[INFO] [stdout] test ui::common::tests::parse_dbm_tests::parses_negative_with_suffix ... ok
[INFO] [stdout] test ui::common::tests::format_compact_title_tests::returns_model_only_without_serial ... ok
[INFO] [stdout] test ui::common::tests::parse_dbm_tests::parses_positive_values ... ok
[INFO] [stdout] test ui::common::tests::gcode_state_to_status_tests::maps_known_states ... ok
[INFO] [stdout] test ui::common::tests::gcode_state_to_status_tests::maps_unknown_to_connecting ... ok
[INFO] [stdout] test ui::common::tests::parse_dbm_tests::parses_negative_without_suffix ... ok
[INFO] [stdout] test ui::common::tests::parse_dbm_tests::saturates_on_overflow ... ok
[INFO] [stdout] test ui::header::tests::format_relative_time_tests::days_at_3_days ... ok
[INFO] [stdout] test ui::header::tests::format_relative_time_tests::days_at_86400_seconds ... ok
[INFO] [stdout] test ui::header::tests::format_relative_time_tests::just_now_at_59_seconds ... ok
[INFO] [stdout] test ui::header::tests::format_relative_time_tests::hours_at_5_hours ... ok
[INFO] [stdout] test ui::common::tests::parse_dbm_tests::returns_none_for_no_digits ... ok
[INFO] [stdout] test ui::header::tests::format_relative_time_tests::just_now_for_recent ... ok
[INFO] [stdout] test ui::header::tests::format_relative_time_tests::hours_at_3600_seconds ... ok
[INFO] [stdout] test ui::common::tests::parse_dbm_tests::returns_none_for_empty ... ok
[INFO] [stdout] test ui::header::tests::render_wifi_signal_tests::boundary_strong_threshold ... ok
[INFO] [stdout] test ui::header::tests::format_relative_time_tests::minutes_at_30_min ... ok
[INFO] [stdout] test ui::header::tests::format_relative_time_tests::minutes_at_60_seconds ... ok
[INFO] [stdout] test ui::header::tests::hms_severity_constants_tests::severity_error_is_two ... ok
[INFO] [stdout] test ui::header::tests::hms_severity_constants_tests::severity_warning_is_one ... ok
[INFO] [stdout] test ui::header::tests::render_wifi_signal_tests::boundary_medium_threshold ... ok
[INFO] [stdout] test ui::header::tests::render_wifi_signal_tests::empty_signal_shows_dashes ... ok
[INFO] [stdout] test ui::header::tests::render_wifi_signal_tests::just_above_strong_threshold ... ok
[INFO] [stdout] test ui::header::tests::render_wifi_signal_tests::medium_signal_is_yellow ... ok
[INFO] [stdout] test ui::header::tests::render_wifi_signal_tests::strong_signal_is_green ... ok
[INFO] [stdout] test ui::header::tests::render_wifi_signal_tests::weak_signal_is_red ... ok
[INFO] [stdout] test ui::help::tests::centered_rect_tests::centers_horizontally_and_vertically ... ok
[INFO] [stdout] test ui::help::tests::centered_rect_tests::clamps_when_overlay_taller_than_area ... ok
[INFO] [stdout] test ui::help::tests::centered_rect_tests::clamps_when_overlay_wider_than_area ... ok
[INFO] [stdout] test ui::help::tests::centered_rect_tests::respects_area_offset ... ok
[INFO] [stdout] test ui::help::tests::centered_rect_tests::exact_fit ... ok
[INFO] [stdout] test ui::help::tests::centered_rect_tests::zero_size_area ... ok
[INFO] [stdout] test ui::header::tests::render_wifi_signal_tests::unparseable_signal_uses_default_weak ... ok
[INFO] [stdout] test ui::help::tests::line_builder_tests::indicator_line_has_green_label ... ok
[INFO] [stdout] test ui::help::tests::line_builder_tests::section_title_has_bold_cyan_text ... ok
[INFO] [stdout] test ui::help::tests::shortcut_data_tests::all_control_shortcuts_have_content ... ok
[INFO] [stdout] test ui::help::tests::line_builder_tests::shortcut_line_has_yellow_key_and_white_desc ... ok
[INFO] [stdout] test ui::help::tests::shortcut_data_tests::all_indicators_have_content ... ok
[INFO] [stdout] test ui::help::tests::shortcut_data_tests::all_nav_shortcuts_have_content ... ok
[INFO] [stdout] test ui::help::tests::shortcut_data_tests::control_shortcuts_are_not_empty ... ok
[INFO] [stdout] test ui::help::tests::shortcut_data_tests::nav_shortcuts_are_not_empty ... ok
[INFO] [stdout] test ui::help::tests::shortcut_data_tests::overlay_width_is_reasonable ... ok
[INFO] [stdout] test ui::help::tests::shortcut_data_tests::indicators_are_not_empty ... ok
[INFO] [stdout] test ui::progress::tests::format_eta_clock_tests::handles_positive_timezone_offset ... ok
[INFO] [stdout] test ui::progress::tests::format_eta_clock_tests::hour_is_in_valid_12_hour_range ... ok
[INFO] [stdout] test ui::progress::tests::format_eta_clock_tests::handles_negative_timezone_offset ... ok
[INFO] [stdout] test ui::progress::tests::format_eta_clock_tests::handles_very_long_estimates ... ok
[INFO] [stdout] test ui::progress::tests::format_eta_clock_tests::returns_borrowed_for_zero_remaining ... ok
[INFO] [stdout] test ui::progress::tests::format_time_tests::formats_exact_hours ... ok
[INFO] [stdout] test ui::common::tests::parse_dbm_tests::handles_whitespace_in_value ... ok
[INFO] [stdout] test ui::progress::tests::format_time_tests::returns_borrowed_for_zero ... ok
[INFO] [stdout] test ui::progress::tests::format_time_tests::formats_large_values ... ok
[INFO] [stdout] test ui::common::tests::parse_dbm_tests::minus_after_digits_is_ignored ... ok
[INFO] [stdout] test ui::progress::tests::format_time_tests::formats_minutes_only ... ok
[INFO] [stdout] test ui::progress::tests::format_time_tests::formats_hours_and_minutes ... ok
[INFO] [stdout] test ui::progress::tests::truncate_str_tests::handles_extension_at_start_as_no_extension ... ok
[INFO] [stdout] test ui::progress::tests::truncate_str_tests::handles_short_name_with_extension ... ok
[INFO] [stdout] test ui::progress::tests::truncate_str_tests::handles_multiple_dots ... ok
[INFO] [stdout] test ui::progress::tests::truncate_str_tests::returns_borrowed_when_short_enough ... ok
[INFO] [stdout] test ui::progress::tests::truncate_str_tests::returns_ellipsis_for_very_short_max ... ok
[INFO] [stdout] test ui::progress::tests::truncate_str_tests::preserves_longer_extension ... ok
[INFO] [stdout] test ui::progress::tests::truncate_str_tests::truncates_from_end_when_no_extension ... ok
[INFO] [stdout] test ui::progress::tests::truncate_str_tests::truncates_from_middle_preserving_extension ... ok
[INFO] [stdout] test ui::progress::tests::truncate_str_tests::handles_very_long_extension ... ok
[INFO] [stdout] test ui::progress::tests::format_eta_clock_tests::format_contains_colon ... ok
[INFO] [stdout] test ui::progress::tests::format_eta_clock_tests::formats_12_hour_with_am_pm ... ok
[INFO] [stdout] test ui::status::tests::panel_height_tests::no_ams_returns_minimum_height ... ok
[INFO] [stdout] test ui::status::tests::panel_height_tests::single_lite_unit_skips_humidity ... ok
[INFO] [stdout] test ui::status::tests::panel_height_tests::humidity_grade_display_values ... ok
[INFO] [stdout] test ui::status::tests::panel_height_tests::tray_with_sub_brand_adds_line ... ok
[INFO] [stdout] test ui::status::tests::panel_height_tests::single_non_first_unit_has_spacer_but_no_separator ... ok
[INFO] [stdout] test ui::status::tests::panel_height_tests::two_units_adds_separator_and_spacer ... ok
[INFO] [stdout] test ui::temps::tests::chamber_range_for_filament_tests::handles_case_insensitivity ... ok
[INFO] [stdout] test ui::status::tests::panel_height_tests::single_unit_no_sub_brands ... ok
[INFO] [stdout] test ui::temps::tests::chamber_range_for_filament_tests::returns_abs_range ... ok
[INFO] [stdout] test ui::temps::tests::chamber_range_for_filament_tests::returns_default_for_unknown ... ok
[INFO] [stdout] test ui::temps::tests::chamber_range_for_filament_tests::returns_nylon_range ... ok
[INFO] [stdout] test ui::temps::tests::chamber_range_for_filament_tests::returns_pa_range ... ok
[INFO] [stdout] test ui::temps::tests::chamber_range_for_filament_tests::returns_pc_range ... ok
[INFO] [stdout] test ui::temps::tests::chamber_range_for_filament_tests::returns_petg_range ... ok
[INFO] [stdout] test ui::temps::tests::chamber_range_for_filament_tests::returns_tpu_range ... ok
[INFO] [stdout] test ui::temps::tests::panel_height_tests::returns_correct_height_with_chamber_and_tray ... ok
[INFO] [stdout] test ui::temps::tests::panel_height_tests::returns_correct_height_with_chamber_no_tray ... ok
[INFO] [stdout] test ui::temps::tests::chamber_range_for_filament_tests::returns_pva_range ... ok
[INFO] [stdout] test ui::temps::tests::chamber_range_for_filament_tests::returns_asa_range ... ok
[INFO] [stdout] test ui::temps::tests::chamber_range_for_filament_tests::returns_pla_range ... ok
[INFO] [stdout] test ui::temps::tests::chamber_range_for_filament_tests::handles_pla_variants ... ok
[INFO] [stdout] test ui::tests::header_height_tests::accounts_for_xcam_indicators ... ok
[INFO] [stdout] test ui::temps::tests::panel_height_tests::returns_correct_height_without_chamber ... ok
[INFO] [stdout] test ui::tests::header_height_tests::errors_dominate_when_many ... ok
[INFO] [stdout] test ui::tests::header_height_tests::minimum_height_for_default_state ... ok
[INFO] [stdout] test ui::tests::header_height_tests::grows_with_hms_errors ... ok
[INFO] [stdout] test ui::toast::tests::panel_height_tests::one_toast_one_line ... ok
[INFO] [stdout] test ui::toast::tests::panel_height_tests::zero_toasts_zero_height ... ok
[INFO] [stdout] test ui::toast::tests::panel_height_tests::three_toasts_three_lines ... ok
[INFO] [stdout] test ui::tests::header_height_tests::accounts_for_ipcam_indicators ... ok
[INFO] [stdout] test ui::toast::tests::toast_color_mapping_tests::error_is_red ... ok
[INFO] [stdout] test ui::toast::tests::toast_color_mapping_tests::info_is_cyan ... ok
[INFO] [stdout] test ui::toast::tests::toast_color_mapping_tests::success_is_green ... ok
[INFO] [stdout] test ui::toast::tests::toast_color_mapping_tests::warning_is_yellow ... ok
[INFO] [stdout] test ui::toast::tests::toast_icon_mapping_tests::error_icon ... ok
[INFO] [stdout] test ui::toast::tests::toast_icon_mapping_tests::info_icon ... ok
[INFO] [stdout] test ui::toast::tests::toast_icon_mapping_tests::success_icon ... ok
[INFO] [stdout] test wizard::tests::access_code_non_alphanumeric_special ... ok
[INFO] [stdout] test wizard::tests::access_code_too_short_three ... ok
[INFO] [stdout] test wizard::tests::access_code_non_alphanumeric_dash ... ok
[INFO] [stdout] test ui::toast::tests::toast_icon_mapping_tests::warning_icon ... ok
[INFO] [stdout] test wizard::tests::access_code_unicode_rejected ... ok
[INFO] [stdout] test wizard::tests::access_code_too_short_empty ... ok
[INFO] [stdout] test wizard::tests::access_code_non_alphanumeric_space ... ok
[INFO] [stdout] test wizard::tests::access_code_too_short_one ... ok
[INFO] [stdout] test wizard::tests::access_code_valid_minimum_length ... ok
[INFO] [stdout] test wizard::tests::access_code_valid_mixed_case ... ok
[INFO] [stdout] test wizard::tests::access_code_valid_typical ... ok
[INFO] [stdout] test wizard::tests::ip_empty_string ... ok
[INFO] [stdout] test wizard::tests::ip_hostname_rejected ... ok
[INFO] [stdout] test wizard::tests::ip_malformed_letters ... ok
[INFO] [stdout] test wizard::tests::ip_valid_ipv6_full ... ok
[INFO] [stdout] test wizard::tests::ip_valid_ipv6_long ... ok
[INFO] [stdout] test wizard::tests::ip_valid_ipv6_loopback ... ok
[INFO] [stdout] test wizard::tests::ip_malformed_extra_octets ... ok
[INFO] [stdout] test wizard::tests::ip_valid_ipv4_loopback ... ok
[INFO] [stdout] test wizard::tests::ip_malformed_octet_out_of_range ... ok
[INFO] [stdout] test wizard::tests::ip_valid_ipv4_zeros ... ok
[INFO] [stdout] test wizard::tests::ip_valid_ipv4 ... ok
[INFO] [stdout] test wizard::tests::serial_boundary_three_chars ... ok
[INFO] [stdout] test wizard::tests::serial_non_alphanumeric_underscore ... ok
[INFO] [stdout] test wizard::tests::serial_too_short_empty ... ok
[INFO] [stdout] test wizard::tests::ip_with_port ... ok
[INFO] [stdout] test wizard::tests::serial_non_alphanumeric_dash ... ok
[INFO] [stdout] test wizard::tests::serial_non_alphanumeric_space ... ok
[INFO] [stdout] test wizard::tests::serial_non_alphanumeric_special ... ok
[INFO] [stdout] test wizard::tests::serial_too_short_two_chars ... ok
[INFO] [stdout] test wizard::tests::ip_whitespace_only ... ok
[INFO] [stdout] test wizard::tests::serial_too_short_one_char ... ok
[INFO] [stdout] test wizard::tests::serial_unicode_rejected ... ok
[INFO] [stdout] test wizard::tests::serial_valid_nonstandard_length ... ok
[INFO] [stdout] test wizard::tests::serial_valid_standard_length ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 372 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "dde61f432e203ad4373b1fc68efbd8fd635982a37e9eed682e1d810f1f879ed4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "dde61f432e203ad4373b1fc68efbd8fd635982a37e9eed682e1d810f1f879ed4", kill_on_drop: false }`
[INFO] [stdout] dde61f432e203ad4373b1fc68efbd8fd635982a37e9eed682e1d810f1f879ed4
